<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  
  <meta http-equiv="X-UA-Compatible" content="IE=edge" >
  <title>VIM学习笔记 | 前端.林姐姐</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="首先我们知道在命令行中输入vim,进入vim文编辑器。可能有人会问vim是什么？vim是多模式文本编辑器也可以说是跨平台的文本编辑器，什么平台都可以用，windows，linux，unix，etc.由vi更新而来 VIM 是vi 的加强版.不仅兼容vi的所有指令，而且还有一些新的特性在里面。安装vim之后会有个vimrc文件，像高亮、字体等等所有的设置都可以写在里面的，感兴趣可以去网上找找vim配">
<meta property="og:type" content="article">
<meta property="og:title" content="VIM学习笔记">
<meta property="og:url" content="http://yoursite.com/2016/01/19/VIM学习笔记/index.html">
<meta property="og:site_name" content="前端.林姐姐">
<meta property="og:description" content="首先我们知道在命令行中输入vim,进入vim文编辑器。可能有人会问vim是什么？vim是多模式文本编辑器也可以说是跨平台的文本编辑器，什么平台都可以用，windows，linux，unix，etc.由vi更新而来 VIM 是vi 的加强版.不仅兼容vi的所有指令，而且还有一些新的特性在里面。安装vim之后会有个vimrc文件，像高亮、字体等等所有的设置都可以写在里面的，感兴趣可以去网上找找vim配">
<meta property="og:updated_time" content="2016-01-20T07:52:35.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="VIM学习笔记">
<meta name="twitter:description" content="首先我们知道在命令行中输入vim,进入vim文编辑器。可能有人会问vim是什么？vim是多模式文本编辑器也可以说是跨平台的文本编辑器，什么平台都可以用，windows，linux，unix，etc.由vi更新而来 VIM 是vi 的加强版.不仅兼容vi的所有指令，而且还有一些新的特性在里面。安装vim之后会有个vimrc文件，像高亮、字体等等所有的设置都可以写在里面的，感兴趣可以去网上找找vim配">
  
    <link rel="alternative" href="/atom.xml" title="前端.林姐姐" type="application/atom+xml">
  
  
    <link rel="icon" href="img/linjie.jpg">
  
  <link rel="stylesheet" href="/css/style.css" type="text/css">
</head>

<body>
  <div id="container">
    <div class="left-col">
    <div class="overlay"></div>
<div class="intrude-less">
	<header id="header" class="inner">
		<a href="/" class="profilepic">
			
			<img lazy-src="undefined" class="js-avatar">
			
		</a>

		<hgroup>
		  <h1 class="header-author"><a href="/">林姐姐</a></h1>
		</hgroup>

		
		<p class="header-subtitle">让未来的你的感谢现在的自己！</p>
		

		
			<div class="switch-btn">
				<div class="icon">
					<div class="icon-ctn">
						<div class="icon-wrap icon-house" data-idx="0">
							<div class="birdhouse"></div>
							<div class="birdhouse_holes"></div>
						</div>
						<div class="icon-wrap icon-ribbon hide" data-idx="1">
							<div class="ribbon"></div>
						</div>
						
						<div class="icon-wrap icon-link hide" data-idx="2">
							<div class="loopback_l"></div>
							<div class="loopback_r"></div>
						</div>
						
						
						<div class="icon-wrap icon-me hide" data-idx="3">
							<div class="user"></div>
							<div class="shoulder"></div>
						</div>
						
					</div>
					
				</div>
				<div class="tips-box hide">
					<div class="tips-arrow"></div>
					<ul class="tips-inner">
						<li>菜单</li>
						<li>標籤</li>
						
						<li>友情链接</li>
						
						
						<li>關於</li>
						
					</ul>
				</div>
			</div>
		

		<div class="switch-area">
			<div class="switch-wrap">
				<section class="switch-part switch-part1">
					<nav class="header-menu">
						<ul>
						
							<li><a href="/">主页</a></li>
				        
							<li><a href="/archives">所有文章</a></li>
				        
							<li><a href="/categories/学习笔记/">学习笔记</a></li>
				        
							<li><a href="/categories/技术摘录/">技术摘录</a></li>
				        
						</ul>
					</nav>
					<nav class="header-nav">
						<div class="social">
							
								<a class="github" target="_blank" href="https://github.com/linjieFE" title="github">github</a>
					        
								<a class="mail" target="_blank" href="mailto:solocode@163.com" title="mail">mail</a>
					        
						</div>
					</nav>
				</section>
				
				
				<section class="switch-part switch-part2">
					<div class="widget tagcloud" id="js-tagcloud">
						<a href="/tags/gulp/" style="font-size: 10px;">gulp</a> <a href="/tags/hexo/" style="font-size: 10px;">hexo</a> <a href="/tags/javascript/" style="font-size: 10px;">javascript</a> <a href="/tags/mac技巧/" style="font-size: 13.33px;">mac技巧</a> <a href="/tags/react/" style="font-size: 10px;">react</a> <a href="/tags/react-native/" style="font-size: 10px;">react-native</a> <a href="/tags/vim/" style="font-size: 10px;">vim</a> <a href="/tags/前题面试题/" style="font-size: 10px;">前题面试题</a> <a href="/tags/学习笔记/" style="font-size: 20px;">学习笔记</a> <a href="/tags/终端/" style="font-size: 10px;">终端</a> <a href="/tags/随笔/" style="font-size: 16.67px;">随笔</a>
					</div>
				</section>
				
				
				
				<section class="switch-part switch-part3">
					<div id="js-friends">
					
			          <a target="_blank" class="main-nav-link switch-friends-link" href="http://www.ruanyifeng.com/home.html">阮一峰ES6</a>
			        
			          <a target="_blank" class="main-nav-link switch-friends-link" href="http://nodeapi.ucdok.com/api/">NodeJS在线文档</a>
			        
			          <a target="_blank" class="main-nav-link switch-friends-link" href="http://jquery.cuishifeng.cn">jquery在线文档</a>
			        
			          <a target="_blank" class="main-nav-link switch-friends-link" href="http://www.w3school.com.cn/js/">javascript手册</a>
			        
			          <a target="_blank" class="main-nav-link switch-friends-link" href="http://www.phpstudy.net/css3/">css3在线手册</a>
			        
			          <a target="_blank" class="main-nav-link switch-friends-link" href="http://blog.css6.com">凯哥的博客</a>
			        
			        </div>
				</section>
				

				
				
				<section class="switch-part switch-part4">
				
					<div id="js-aboutme">80s，来自祖国最东端乌苏里江畔。爱好运动和音乐，希望在这里可以跟一样爱好前端的朋友共同进步！</div>
				</section>
				
			</div>
		</div>
	</header>				
</div>

    </div>
    <div class="mid-col">
      <nav id="mobile-nav">
  	<div class="overlay">
  		<div class="slider-trigger"></div>
  		<h1 class="header-author js-mobile-header hide">林姐姐</h1>
  	</div>
	<div class="intrude-less">
		<header id="header" class="inner">
			<div class="profilepic">
			
				<img lazy-src="undefined" class="js-avatar">
			
			</div>
			<hgroup>
			  <h1 class="header-author">林姐姐</h1>
			</hgroup>
			
			<p class="header-subtitle">让未来的你的感谢现在的自己！</p>
			
			<nav class="header-menu">
				<ul>
				
					<li><a href="/">主页</a></li>
		        
					<li><a href="/archives">所有文章</a></li>
		        
					<li><a href="/categories/学习笔记/">学习笔记</a></li>
		        
					<li><a href="/categories/技术摘录/">技术摘录</a></li>
		        
		        <div class="clearfix"></div>
				</ul>
			</nav>
			<nav class="header-nav">
				<div class="social">
					
						<a class="github" target="_blank" href="https://github.com/linjieFE" title="github">github</a>
			        
						<a class="mail" target="_blank" href="mailto:solocode@163.com" title="mail">mail</a>
			        
				</div>
			</nav>
		</header>				
	</div>
</nav>

      <div class="body-wrap"><article id="post-VIM学习笔记" class="article article-type-post" itemscope itemprop="blogPost">
  
    <div class="article-meta">
      <a href="/2016/01/19/VIM学习笔记/" class="article-date">
  	<time datetime="2016-01-19T09:17:27.000Z" itemprop="datePublished">2016-01-19</time>
</a>
    </div>
  
  <div class="article-inner">
    
      <input type="hidden" class="isFancy" />
    
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      VIM学习笔记
    </h1>
  

      </header>
      
      <div class="article-info article-info-post">
        
	<div class="article-tag tagcloud">
		<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/vim/">vim</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/学习笔记/">学习笔记</a></li></ul>
	</div>

        
	<div class="article-category tagcloud">
	<a class="article-category-link" href="/categories/技术摘录/">技术摘录</a>
	</div>


        <div class="clearfix"></div>
      </div>
      
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>首先我们知道在命令行中输入vim,进入vim文编辑器。<br>可能有人会问vim是什么？vim是多模式文本编辑器也可以说是跨平台的文本编辑器，什么平台都可以用，windows，linux，unix，etc.<br>由vi更新而来 VIM 是vi 的加强版.不仅兼容vi的所有指令，而且还有一些新的特性在里面。<br>安装vim之后会有个vimrc文件，像高亮、字体等等所有的设置都可以写在里面的，感兴趣可以去网上找找vim配置文件.<br>先介绍一些非常基础的vim知识供学习参考。</p>
<p>vim有三种工作模式：插入模式 (Insert mode)、命令模式(Command mode) 、行模式 (EX Commands mode)。<br>插入模式就像我们平时使用记事本时一样，可以随意的输入文本，<br>基本没有什么可说的。主要是其它两个模式.首先了解下三个模式的相互转换：<br><a id="more"></a></p>
<h1 id="u4E09_u4E2A_u6A21_u5F0F_u7684_u76F8_u4E92_u8F6C_u6362_u3002"><a href="#u4E09_u4E2A_u6A21_u5F0F_u7684_u76F8_u4E92_u8F6C_u6362_u3002" class="headerlink" title="三个模式的相互转换。"></a>三个模式的相互转换。</h1><p>打开一个vim，它的默认模式是命令模式，<br>输入a或i等字符后可以转为插入模式；<br>(按一下i键,下端显示 –INSERT–)<br>命令模式输入:可以转为行模式；<br>行模式也是在输入Esc后可以返回命令模式。<br>注意：行模式和插入模式是不能直接相互转换的，必须能过命令模式转换。<br>（下面的命令如果是以冒号开头的就是默认是行模式命令，否则是命令模式命令）<br>hjkl四个键相当于←↓↑→，可以在命令模式下使用它们来上下左右移动光标。<br>（特别注意不要再使用小键盘的上下左右来移动光标了，不然就失去使用vim的主要原因之一了，这是刚使用vim时最不容易改变的习惯）</p>
<h2 id="1-__u666E_u901A_u6A21_u5F0F"><a href="#1-__u666E_u901A_u6A21_u5F0F" class="headerlink" title="1. 普通模式"></a>1. 普通模式</h2><p>在shell中直接打vim filename就会进入普通模式。在这个状态，我们可以通过不同的按键对文件进行操作和切换到其它模式。按“:”可切换到命令模式，按i，o，a可进入编辑模。</p>
<h3 id="1-1-__u7F16_u8F91"><a href="#1-1-__u7F16_u8F91" class="headerlink" title="1.1. 编辑"></a>1.1. 编辑</h3><p>i<br>进入编辑模式。</p>
<p>o<br>在当前位置下插入一空行，进入编辑模式，光标位于空行的最开头。</p>
<p>a<br>光标后移一个字符，进入编辑模式。</p>
<p>b<br>是跳到单词的开头</p>
<p>e<br>是跳到单词的结尾</p>
<p>v<br>这入可视模式，可用高亮的色块选择内容。</p>
<p>x or DEL键<br>删除当前字符，删除内容保存在缓冲区。</p>
<p>xp<br>左右字符互换。</p>
<p>dd<br>删除当前行，删除内容保存在缓冲区。</p>
<p>ddp<br>上下两行的内容互换。</p>
<p>d$<br>删除当前光标至行尾的所有内容。</p>
<p>dG<br>删除从当前行至文件未尾的所有行。</p>
<p>u<br>undo。</p>
<p>w<br>是跳到下一个单词的开头</p>
<p>v<br>进地visual模式，移动光标可选择文本。</p>
<p>y<br>把当前行复制到缓冲区中。</p>
<p>p<br>把缓冲区中的文本插入到当前位置。</p>
<p>“ay<br>把当前行复制到a缓冲区。可用26个字母命名多个缓冲区。</p>
<p>“ap<br>把a缓冲区中的文本插入当前位置。</p>
<p>J<br>上下两行合并成一行。</p>
<p>.<br>英文句点的作用是重复执行上次执行的命令，如你按了”ap插入a缓冲区的内容，那你就可按”.”来重复这个操作。</p>
<h3 id="1-2-__u5149_u6807_u79FB_u52A8"><a href="#1-2-__u5149_u6807_u79FB_u52A8" class="headerlink" title="1.2. 光标移动"></a>1.2. 光标移动</h3><p>h，j，k，l<br>在vim中，除了可使用光标键在移动光标外，还有一种更方便的光标移动方式。就是使用h，j，k，l这四个键来移动光标。h控制光标左移，j控制光标下移，k控制光标上移，l控制光标右移。通过使用这四个字母键就可使我们的手不用移动即可控制光标的移动。刚开始使用可能会有些不习惯，但熟练使用后你会发觉你的输入速度提高不少，强烈建议喜欢vim的朋友使用。</p>
<p>$<br>光标移动到行尾。</p>
<p>G<br>光标移动到文档末尾。</p>
<p>0<br>移动到此行的一个字符处</p>
<p>H,L<br>H控制光标移动到当前屏幕头，L控制光标移动到当前屏幕尾。</p>
<p>{，}<br>{控制光标上移一个段落，}控制光标下移一个段落</p>
<p>ctrl+f<br>向前翻动一页</p>
<p>ctrl+b<br>前后翻动一页</p>
<h3 id="1-3__u67E5_u627E_u67E5_u6362"><a href="#1-3__u67E5_u627E_u67E5_u6362" class="headerlink" title="1.3 查找查换"></a>1.3 查找查换</h3><p>  /word<br>  在光标之后查找一个word的字符串</p>
<p>  ？word<br>  在光标之前查找一个word的字符串</p>
<p>  ：n1,n2s/word1/word2/g<br>  在第n1行和n2行之间查找word1,并将word1替换为word2</p>
<p>  :1,$s/word1/word2/g<br>  从第一行到最后一行查找word1并替换为word2</p>
<p>  :1,$s/word1/word2/gc<br>  从第一行到最后一行查找word1并替换为word2,在替换前显示提示符，让用户确认</p>
<h3 id="1-4__u5220_u9664__u590D_u5236__u7C98_u8D34"><a href="#1-4__u5220_u9664__u590D_u5236__u7C98_u8D34" class="headerlink" title="1.4 删除 复制 粘贴"></a>1.4 删除 复制 粘贴</h3><p>x，X<br>x向后删除一个字符  X向前删除一个字符  </p>
<p>nx<br>向后删除n个字符</p>
<p>dd<br>删除光标所在的整列</p>
<p>ndd<br>删除光标所在列的向下n列</p>
<p>yy<br>复制光标所在行  </p>
<p>nyy<br>复制光标所在行的向下n行</p>
<p>p ，P<br>p复制的数据粘贴在光标下一行，P上一行</p>
<p>u<br>恢复上一个动作</p>
<h2 id="2-__u7F16_u8F91_u6A21_u5F0F"><a href="#2-__u7F16_u8F91_u6A21_u5F0F" class="headerlink" title="2. 编辑模式"></a>2. 编辑模式</h2><p>ESC<br>退出编辑状态。返回一般模式</p>
<p>i ，I<br>插入：在当前光标所在处插入输入的文字，已存在的字符会向后退 </p>
<p>a，A<br>添加 ：由当前光标所在处的下一个字符开始输入，已存在的字符向后退 </p>
<p>o ，O<br>插入新的一行，从光标所在处的下一行行首开始输入 </p>
<p>r，R<br>替换：r会替换光标所指的那一个字符，R会一直替换光标所指的文字，知道案下esc       </p>
<h2 id="3-__u547D_u4EE4_u6A21_u5F0F"><a href="#3-__u547D_u4EE4_u6A21_u5F0F" class="headerlink" title="3. 命令模式"></a>3. 命令模式</h2><p>在普通模式上按“:”就可进入命令模式，在左下屏幕我们输入一些操作指令。</p>
<p>:q!<br>不保存退出vim。</p>
<p>:w<br>保存文档，但不退出vim。</p>
<p>:w！<br>若文件为只读，强制写入</p>
<p>:q<br>推出vi   </p>
<p>:w ［filename］</p>
<p>保存为另一文件</p>
<p>:wq<br>是保存并退出文件</p>
<p>:x<br>保存退出vim。</p>
<p>:! command<br>运行shell命令。</p>
<p>:e filename<br>编辑/打开一个文件</p>
<p>:s/emacs/vim<br>在当前行中把第一个emacs替换成vim。</p>
<p>:s/emacs/vim/g<br>把当前行中所有的emacs替换成vim。</p>
<p>:%s/emacs/vim/g<br>在全局范围内把emacs替换成vim。</p>
<p>:reg<br>列出缓冲区内容。</p>
<p>:set all<br>列出所有参数的配置情况。</p>
<p>:tabe<br>新建一个标签页。</p>
<p>:tabn or :tabp<br>切换到下一个\上一个标签页。</p>
<p>:close<br>关闭当前标签页。</p>
<p>:qa<br>关闭所有标签页退出。</p>
<p>由于水平有限，加之行文匆忙，文中很可能错误不断，希望大家不要见怪，多批评指正。<br>另附两个vim常用命令链接供参考<br><a href="http://blog.css6.com/2014/12/18/VIM%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/" target="_blank" rel="external">VIM常用命令</a><br><a href="http://www.cnblogs.com/abeen/archive/2010/07/28/1786594.html" target="_blank" rel="external">VIM 常用快捷键</a></p>

      
    </div>
    
  </div>
  
    
<nav id="article-nav">
  
    <a href="/2016/01/20/重新开博－hexo建站笔记/" id="article-nav-newer" class="article-nav-link-wrap">
      <strong class="article-nav-caption"><</strong>
      <div class="article-nav-title">
        
          重新开博－hexo建站笔记
        
      </div>
    </a>
  
  
    <a href="/2016/01/18/mac终端常用命令/" id="article-nav-older" class="article-nav-link-wrap">
      <div class="article-nav-title">MAC终端常用命令行</div>
      <strong class="article-nav-caption">></strong>
    </a>
  
</nav>

  
</article>


<div class="share_jia">
	<!-- JiaThis Button BEGIN -->
	<div class="jiathis_style">
		<span class="jiathis_txt">分享到: &nbsp; </span>
		<a class="jiathis_button_facebook"></a> 
    <a class="jiathis_button_twitter"></a>
    <a class="jiathis_button_plus"></a> 
    <a class="jiathis_button_tsina"></a>
		<a class="jiathis_button_cqq"></a>
		<a class="jiathis_button_douban"></a>
		<a class="jiathis_button_weixin"></a>
		<a class="jiathis_button_tumblr"></a>
    <a href="http://www.jiathis.com/share" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a>
	</div>
	<script type="text/javascript" src="http://v3.jiathis.com/code/jia.js?uid=1405949716054953" charset="utf-8"></script>
	<!-- JiaThis Button END -->
</div>






<div class="duoshuo">
	<!-- 多说评论框 start -->
	<div class="ds-thread" data-thread-key="VIM学习笔记" data-title="VIM学习笔记" data-url="http://yoursite.com/2016/01/19/VIM学习笔记/"></div>
	<!-- 多说评论框 end -->
	<!-- 多说公共JS代码 start (一个网页只需插入一次) -->
	<script type="text/javascript">
	var duoshuoQuery = {short_name:"true"};
	(function() {
		var ds = document.createElement('script');
		ds.type = 'text/javascript';ds.async = true;
		ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
		ds.charset = 'UTF-8';
		(document.getElementsByTagName('head')[0] 
		 || document.getElementsByTagName('body')[0]).appendChild(ds);
	})();
	</script>
	<!-- 多说公共JS代码 end -->
</div>




</div>
      <footer id="footer">
  <div class="outer">
    <div id="footer-info">
    	<div class="footer-left">
    		&copy; 2016 林姐姐
    	</div>
      	<div class="footer-right">
      		<a href="http://hexo.io/" target="_blank">Hexo</a>  Theme <a href="https://github.com/litten/hexo-theme-yilia" target="_blank">Yilia</a> by Litten
      	</div>
    </div>
  </div>
</footer>
    </div>
    
  <link rel="stylesheet" href="/fancybox/jquery.fancybox.css" type="text/css">


<script>
	var yiliaConfig = {
		fancybox: true,
		mathjax: true,
		animate: true,
		isHome: false,
		isPost: true,
		isArchive: false,
		isTag: false,
		isCategory: false,
		open_in_new: false
	}
</script>
<script src="http://7.url.cn/edu/jslib/comb/require-2.1.6,jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="/js/main.js" type="text/javascript"></script>






<script type="text/x-mathjax-config">
MathJax.Hub.Config({
    tex2jax: {
        inlineMath: [ ['$','$'], ["\\(","\\)"]  ],
        processEscapes: true,
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
    }
});

MathJax.Hub.Queue(function() {
    var all = MathJax.Hub.getAllJax(), i;
    for(i=0; i < all.length; i += 1) {
        all[i].SourceElement().parentNode.className += ' has-jax';                 
    }       
});
</script>

<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>


  </div>
</body>
</html>